home *** CD-ROM | disk | FTP | other *** search
/ C/C++ Users Group Library 1996 July / C-C++ Users Group Library July 1996.iso / listings / v_13_02 / pugh / sort.cpp < prev    next >
C/C++ Source or Header  |  1994-12-11  |  1KB  |  72 lines

  1. #include <stdlib.h>
  2. #include <iostream.h>
  3.  
  4. class A
  5.     {
  6. private:
  7.     struct DataType
  8.        {
  9.         double x,y;
  10.         static int compare_function(const void * a, const void * b)
  11.              {
  12.               const DataType *first = (DataType*) a;
  13.               const DataType *second = (DataType*) b;
  14.               if (first->x > second->x)
  15.                 return 1;
  16.               else if (first->x < second->x)
  17.                 return -1;
  18.               else
  19.  
  20.                 return 0;
  21.               }
  22.       }  * data;
  23.       int size;
  24.  public:
  25.     A(int n, double * x, double * y);
  26.    ~A();
  27.    void sort();
  28.    void list();
  29.    };
  30.  
  31. A::A(int n, double * x, double * y)
  32.      {
  33.      size = n;
  34.      data = new DataType[size];
  35.      for (int i = 0; i < size; i++)
  36.        {
  37.          data[i].x = x[i];
  38.          data[i].y = y[i];
  39.        }
  40.      };
  41.  
  42. A::~A()
  43.     {
  44.     delete [] data;
  45.     }
  46.  
  47. void A::sort()
  48.     {
  49.     qsort (data, size, sizeof(DataType), DataType::compare_function);
  50.     }
  51.  
  52. void A::list()
  53.     {
  54.     for (int i = 0; i < size; i++)
  55.       {
  56.         cout << data[i].x << " " << data[i].y << endl;
  57.       }
  58.     }
  59.  
  60. main()
  61.   {
  62.   double xarray[5] = {4.0, 2.0, 3.0, 5.0, 1.0};
  63.   double yarray[5] = {0.1, 0.2, 0.3, 0.4, 0.5};
  64.   A AInst (3, xarray, yarray);
  65.   cout << "Original list" << endl;
  66.   AInst.list();
  67.   AInst.sort();
  68.   cout << endl << "Sorted list" << endl;
  69.   AInst.list();
  70.   return 0;
  71.   }
  72.